package com.zhala.system.mapper;

import java.util.Date;
import java.util.List;

import com.zhala.system.domain.ZlSteelPlate;
import com.zhala.system.domain.vo.PlateMonthStatisticsVO;
import com.zhala.system.domain.vo.PlateStatisticsRespVO;
import com.zhala.system.domain.vo.SteelPlatePageReqVO;
import com.zhala.system.domain.vo.SteelPlateRespVO;
import org.apache.ibatis.annotations.Param;

/**
 * 钢板信息Mapper接口
 *
 * @author ruoyi
 * @date 2024-11-11
 */
public interface ZlSteelPlateMapper {
    /**
     * 查询钢板信息
     *
     * @param ID 钢板信息主键
     * @return 钢板信息
     */
    public ZlSteelPlate selectZlSteelPlateByID(String ID);

    /**
     * 查询钢板信息列表
     *
     * @param zlSteelPlate 钢板信息
     * @return 钢板信息集合
     */
    public List<ZlSteelPlate> selectZlSteelPlateList(ZlSteelPlate zlSteelPlate);

    List<ZlSteelPlate> pageList(@Param("monthStart") Date monthStart, @Param("monthEnd") Date monthEnd, @Param("batchNum") String batchNum, @Param("type") Integer type, @Param("material") String material);

    /**
     * 新增钢板信息
     *
     * @param zlSteelPlate 钢板信息
     * @return 结果
     */
    public int insertZlSteelPlate(ZlSteelPlate zlSteelPlate);

    /**
     * 修改钢板信息
     *
     * @param zlSteelPlate 钢板信息
     * @return 结果
     */
    public int updateZlSteelPlate(ZlSteelPlate zlSteelPlate);

    /**
     * 删除钢板信息
     *
     * @param ID 钢板信息主键
     * @return 结果
     */
    public int deleteZlSteelPlateByID(String ID);

    /**
     * 批量删除钢板信息
     *
     * @param IDs 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteZlSteelPlateByIDs(String[] IDs);

    ZlSteelPlate getByBatchNumAndSerialNum(@Param("batchNum") String batchNum, @Param("serialNum") String serialNum);

    int setPipeId(@Param("pipeId") String pipeId, @Param("idList") List<String> idList);

    List<ZlSteelPlate> listUsed(@Param("idList") List<String> idList);

    List<SteelPlateRespVO> listByPipeId(@Param("pipeId") String pipeId);

    int blanking(@Param("id") String id, @Param("blankingTime") Date blankingTime, @Param("preparationTime") Date preparationTime);

    int coil(@Param("id") String id, @Param("coilStartTime") Date coilStartTime, @Param("coilEndTime") Date coilEndTime);

    List<PlateStatisticsRespVO> statistics(@Param("monthStart") Date monthStart, @Param("monthEnd") Date monthEnd);


    PlateMonthStatisticsVO storeStatistics(@Param("startDate") Date startDate, @Param("endDate") Date endDate);


    List<String> lstBatchNums();

}
